/*
 * @Description:生产者 蒸包子
 * 
 * @Author: rendc
 * 
 * @Date: 2025-08-20 11:35:39
 * 
 * @LastEditors: rendc
 * 
 * @LastEditTime: 2025-08-20 14:26:35
 */
public class Producer extends Thread {
  private Bum bum;

  public Producer(String name, Bum bum) {
    super(name);
    this.bum = bum;
  }

  @Override
  public void run() {
    for (int i = 1; i <= 100; i++) {
      // 同步代码块
      // 锁是包子
      synchronized (bum) {
        // System.out.println("P:bum.flag:" + bum.flag);
        // 不生产包子
        if (bum.flag) {
          // 如果包子存在 不蒸包子
          try {
            // 必须计时 但是无法知道确定的时间
            // Thread.sleep();
            // 可以不计时 但是无法唤醒
            // Thread.join();
            bum.wait();
          } catch (Exception e) {
            e.printStackTrace();
          }
        }
        // 生产包子
        System.out.println("第" + i + "次，生产包子");
        bum.num++;
        System.out.println("包子数量：" + bum.num);
        // 生产完成
        bum.flag = true;
        // 通知消费者
        bum.notify();
      }
    }
  }

}